/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modulo;

import Modulos.EditorPane;
import Modulos.ListadoControlador;
import Modulos.ListadoVista;
import Modulos.Modulo;
import Modulos.ModuloSplit;
import entidates.Carrera;
import entidates.IEntidad;
import entidates.Persona;
import java.awt.Component;
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
import manejadores.ManejadorCarrera;

/**
 *
 * @author Overpower
 */
public class ModuloCarrera extends Modulo {

    private Modulos.ModuloSplit _vista;
    private DatosCarreraControlador _controladorFicha;
    private ListadoControlador _controladorListado;
    private Carrera _carreraSeleccionada;
    private int _seleccionActual;
    
    public ModuloCarrera()
    {
        initComponents();
    }
    
    @Override
    protected final void initComponents() 
    {
        // creamos el manejador
        _manejador = new ManejadorCarrera();
        
        // iniciamos datos de modulo
        _tipo = ETipoModulo.MOD_CARRERA;
        _nombre = "Modulo Carrera";
        
        // creamos la vista
        _vista = new ModuloSplit();
        
        // creamos vista derecha
        _controladorFicha = new DatosCarreraControlador();
        _controladorFicha.SetModulo(this);
        
        // creamos vista izquierda
        _controladorListado = new ListadoControlador();
        _controladorListado.SetModulo(this);
        _controladorListado.SetModel( CreateModel() );
        ActualizarLista(_manejador.GetList());
        _controladorListado.SetListaBuscar (new String[]{"Nombre","Año"});
        _controladorListado.SetListaOrdenar(new String[]{"Nombre","Año"});
        
        // añadimos el listado al panel izq
        javax.swing.JPanel _panel = _vista.getPanelIzquierdo();
        _panel.setLayout(new java.awt.BorderLayout());
        _panel.add( (Component)_controladorListado.getVista());
        Dimension _size = _panel.getMinimumSize();
        Dimension _sizePrefered = ((ListadoVista)_controladorListado.getVista()).getPanel().getPreferredSize();
        _size.width = _sizePrefered.width + 20;
        _size.height = _sizePrefered.height + 20;
        
        _panel.setSize(_size);
        _panel.setMinimumSize(_size);
        
        // añadimos la ficha al panel derecho con modo editor
        _panel = _vista.getPanelDerecho();
        EditorPane _editorPane = new EditorPane();
        
        javax.swing.JPanel _panelEdit = _editorPane.getContenedor();
        _panelEdit.setLayout(new java.awt.BorderLayout());
        _panelEdit.add( (Component)_controladorFicha.getVista() );
        
        // añadimos el editor al panel derecho
        _panel.setLayout(new java.awt.BorderLayout());
        _panel.add(_editorPane);
    }

    private DefaultTableModel CreateModel()
    {
        String titulo[] = 
        {
            "Nombre",
            "Año"
        };
        
        return new DefaultTableModel(null, titulo){
            @Override
            public boolean isCellEditable(int row,int column){
                return false;  
            }   
        };
    }
    
     public void ActualizarLista( ArrayList<IEntidad> _lista )
    {
        String _registros[][] = null;
        if(null != _lista){
            int _count = _lista.size();
            _registros = new String[_count][];

            for( int i = 0; i < _count; i++ )
            {
                Carrera _p = (Carrera)_lista.get(i);
                _registros[i] = new String[4];
                _registros[i][0] = _p.GetNombre();
                _registros[i][1] = _p.GetCreatedAt().toString();
            }
        }
        
        _controladorListado.SetModelData(_registros);
    }
    
    @Override
    public String Modificar(IEntidad _ent) {
        
        String _err = "";
        _err += _manejador.Modificar(_ent);
        

        if( "".equals(_err) )
        {
            Carrera _p = (Carrera)_ent;
            String _row[] = 
            {
                _p.GetNombre(),
                _p.GetCreatedAt().toString()
            };
            
            //_controladorListado.Modificar(_row);
            //_controladorListado.BotonesHabilitados(true);
        }
        
        return _err;
    }

    @Override
    public String Agregar(IEntidad _ent) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public String Eliminar(IEntidad _ent) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void Alta() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void Baja() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void Seleccion(int _idx) {
       _controladorListado.BotonesHabilitados(true);
       _seleccionActual = _idx;
       _carreraSeleccionada = (Carrera)_manejador.Obtener(_idx);
       _controladorFicha.PoblarDatos( _carreraSeleccionada );
       //_controladorFicha.Editable(true);
    }

    @Override
    public Component getVista() {
        return _vista;
    }
    
}
